--
-- Author: shunguo.chen
-- Date: 2018-03-09 14:48:00
--
-- ChessCell 星空谜棋格子

local ChessAction = import(".ChessAction")

local fileName = string.getModeName(...)
local ClassRef = class(fileName)

function ClassRef:ctor(data)
	if data then
		self:init(data)
	end

end

-- //格子基本信息
-- message StarChessCellBaseInfo{
-- 	int32 pos = 1;//位置从1开始
-- 	int32 actionId = 2;//actionID
-- 	repeated int64 uids = 3;//已经触发过的UID
-- }
function ClassRef:init(data)
	self.pos = data.pos
	self.actionId = data.actionId

	local uids = {}
	for k,v in pairs(data.uids) do
		uids[#uids + 1] = v
	end
	self.uids = uids

	self._action = ChessAction.new(self.actionId)
end

-- 添加触发者
function ClassRef:addTrigger(uid)
	self.uids = table.insertUnique(self.uids, uid)
end

-- uid是否已触发过
function ClassRef:isTriggered(uid)
	return table.hasvalue(self.uids, uid)
end

-- 对uid是否可触发，根据重复类型，部分格子触发过之后就不存在了
-- 0不限次数 1自己一次 2全体一次
function ClassRef:isTriggerAble(uid)
	local repeatTp = self._action:getRepeat()
	if repeatTp == "1" then
		return not self:isTriggered(uid)
	elseif repeatTp == "2" then
		return #self.uids == 0
	end
	return true
end

-- 事件触发特效
function ClassRef:getCellFx()
	return self._action:getCellFx()
end

-- 是否可逾越
function ClassRef:isPass()
	return self._action:isPass()
end

-- 是否是不利的
function ClassRef:isBad()
	return self._action:isBad()
end

function ClassRef:getTipMsg()
	return self._action:getTipMsg()
end

function ClassRef:getTarget()
	return self._action:getTarget()
end

function ClassRef:getMessage()
	return self._action:getMessage()
end

function ClassRef:getIcon()
	return self._action:getIcon()
end

function ClassRef:getIconLight()
	return self._action:getIconLight()
end

-- 获取需要显示的类型和参数，只在 前进／后退 有效
function ClassRef:getShowTypeValue()
	return self._action:getShowTypeValue()
end

-- 获取需要显示的buff的类型和参数
function ClassRef:getShowBuffTypeValue()
	return self._action:getShowBuffTypeValue()
end

return ClassRef